Skip to main content

Ansible Templates

Les templates se déploient exactement comme des fichier et utilisent le répertoire templates au lieu du répertoire files, en plus de copier le fichier ils interprètent les fichier en utilisant le moteur de template jinja2 : on peut alors y inclure des variables voire boucler dans des listes / dictionnaires.

Challenge Ansible Templates

Challenge : Déployer dans l'un de vos containers un fichier readme.txt dynamique qui contient les informations suivantes :

  • L'adresse IPv4 du container
  • Le nom de la distribution
  • L'architecture
  • La capacité en mémoire vive du container
  • La version de Python
  • La version d'Ansible

Solution :

  1. Création du Template :

    • Nous avons créé un répertoire templates dans le rôle MySQL en exécutant la commande suivante :

      mkdir ../roles/mysql/templates
    • En utilisant le command suivant, ona a trouvé les variables sur "mysql"

      ansible -m setup mysql -u root 
    • Création du fichier README.txt.j2 dans ce répertoire :

      Your Adresse IP: {{ ansible_default_ipv4.address }}
      Your Distribution: {{ ansible_distribution }}
      Your Architecture: {{ ansible_architecture }}
      Your RAM: {{ ansible_memory_mb.real.total }} MB
      Your Python: {{ ansible_python_version }}
      Your Ansible: {{ ansible_version.full }}
  2. Utilisation du Template dans la Tâche Ansible :

    • Ajout de la tâche suivante dans le fichier ansible/playbooks/roles/mysql/tasks/main.yml pour déployer le template :
      - name: Déployer le template
      ansible.builtin.template:
      src: README.txt.j2
      dest: /root/README.txt
  3. Exécution du Playbook :

    • Exécution du playbook avec la commande suivante :
      ansible-playbook playbooks/mysql.yml
  4. Vérification dans le Container :

    • Accéder au container et vérifier que le fichier root/README.txt a été créé :
      Your Adresse IP: 10.239.37.201
      Your Distribution: Ubuntu
      Your Architecture: x86_64
      Your RAM: 3859 MB
      Your Python: 3.10.12
      Your Ansible: 2.15.0

Ainsi, avec l'utilisation de templates, le fichier readme.txt a été déployé de manière dynamique dans le container, prenant en compte les variables spécifiées lors de l'exécution du playbook.